// 封装ajax

// 第一步 得知道什么是ajax  XMLHttpRequest()

// let xhr = new XMLHttpRequest()

// // 创建http请求 第一个参数 请求方式   第二个参数 接口地址 第三个参数 同步还是异步
// xhr.open('GET', '/server', true)

// xhr.onreadystatechange = function () {
//   if (this.readyState !== 4) return
//   // 当请求成功
//   if (this.status === 200) {
//     //成功可以对数据进行一些处理
//     console.log(this.response)
//   } else {
//     console.error(this.statusText)
//   }
// }

// // 设置请求失败时候的监听函数
// xhr.onerror =function() {
//   console.error(this.statusText)
// }

// // 还可以设置请求头信息
// xhr.responseType = 'json'
// xhr.setRequestHeader('Accept', 'application/json')

// // 发送Http请求
// xhr.send(null)

function request (url) {
  // 创建一个promise 对象
  let promise = new Promise((resolve, reject) => {
    let xhr = new XMLHttpRequest()

    // 新建个请求
    xhr.open('GET', url , true)
    // 设置状态的监听函数
    xhr.onreadystatechange = function () {
      if (this.readyState !== 4) return
      // 当请求成功
      if (this.status === 200) {
        //成功可以对数据进行一些处理
        console.log(this.response)
        resolve(this.response)
      } else {
        console.error(this.statusText)
        reject(new Error(this.statusText))
      }
    }

    // 设置错误监听函数
    xhr.onerror = function () {
      reject(new Error(this.statusText))
    }
    
    // 还可以设置请求头信息
    xhr.responseType = 'json'
    xhr.setRequestHeader('Accept', 'application/json')

    //发送http请求
    xhr.send(null)
  })
  return promise
}

// 模拟调用

request('/api/user').then((res)=> {
  console.log(res)
}).catch((err) => {
  console.err(err)
})